This disclosure relates to quality control, and in particular, to devices and methods that are used to identify flaws or shortcomings in software applications.
A data-processing machine requires reconfiguration to transform it from a generic computer to a special purpose machine that carries out a particular task. The resulting reconfiguration thus improves the generic computer by providing it with the ability to do things that it could not do before. This reconfiguration is typically carried out by causing the generic computer to execute certain specialized software. This specialized software is often referred to as an “application” or an “app.”
For large projects, the application that is to be tested is designed and implemented by a team of engineers. This application is then provided to a quality-assurance team. The quality-assurance team is typically separate from the design team. The quality-assurance team proceeds to search for defects or shortcomings in this application.
The procedure for testing an application can be very difficult. This difficulty arises for many reasons. One such reason is that the quality-assurance team is essentially trying to prove a negative, namely that no defects or shortcomings exist in the software being tested. In general, it is not cost-effective to run a large number of tests to cover every possible case. It is therefore necessary to select test data judiciously.
Another difficulty in the procedure for testing an application is that the environment in which the test is conducted can make a difference. The environment generally includes both software that is executing, and data that the application is intended to operate on. Knowing what other software is executing is important in case of interactions between the application being tested and that software. Having the correct data present is important since the features of the application that are being tested depend a great deal on the data that is provided to the application. For example, the application may request certain data from a database. In such cases, testing the application requires knowing that the database has the correct data. Accordingly, the quality-assurance team generally takes steps to control the environment.
Yet another difficulty that arises in testing an application is establishing the integrity of the results. It can, in some cases, be difficult to know what results should be considered “correct” or “incorrect” for a given input set of input data that is processed in a particular environment.
Since testing is a major part of the software development life cycle, it is useful to provide a way to more efficiently carry it out.